package CollUtil;

import cn.hutool.core.collection.CollUtil;

import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class CollUtilDemo1 {
    public static void main(String[] args) {
        // 创建一个包含空值和空字符串的集合
        List<String> collection = new ArrayList<>(Arrays.asList("元素1", "", "元素2", null, " ", "元素3", "元素4"));

        // 1. 移除集合中的空值
        List<String> noNulls = CollUtil.removeNull(collection);
        System.out.println("移除空值后的集合: " + noNulls); // 输出: [元素1, , 元素2,  , 元素3, 元素4]

        // 2. 移除集合中的空字符串
        List<String> noEmptyStrings = CollUtil.removeEmpty(noNulls);
        System.out.println("移除空字符串后的集合: " + noEmptyStrings); // 输出: [元素1, 元素2,  , 元素3, 元素4]

        // 3. 移除集合中的空白字符串
        List<String> noBlankStrings = CollUtil.removeBlank(noEmptyStrings);
        System.out.println("移除空白字符串后的集合: " + noBlankStrings); // 输出: [元素1, 元素2, 元素3, 元素4]

        // 4. 根据条件移除元素并添加到目标集合
        List<String> targetCollection = new ArrayList<>(Arrays.asList("元素A", "元素B", "元素C", "元素D"));
        List<String> resultCollection = new ArrayList<>();
        CollUtil.removeWithAddIf(targetCollection, resultCollection, s -> s.contains("A"));
        System.out.println("移除包含'A'的元素后目标集合: " + targetCollection); // 输出: [元素B, 元素C, 元素D]
        System.out.println("移除的元素: " + resultCollection); // 输出: [元素A]

        // 5. 从集合中提取元素
        List<Object> extracted = CollUtil.extract(collection, obj -> obj.toString().toUpperCase());
        System.out.println("提取并转换后的集合: " + extracted); // 输出: [元素1, , 元素2, null,  , 元素3, 元素4]
    }


}
